{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0b21e6e9",
   "metadata": {},
   "source": [
    "# 0. Import Libraries"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a2370c44",
   "metadata": {},
   "source": [
    "!pip install pandas\n",
    "!pip install matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a5101882",
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import tensorflow.keras as keras\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.layers import *\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy.io import loadmat\n",
    "from scipy.io import savemat\n",
    "import math\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9a461153",
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy.random import seed\n",
    "seed(0)\n",
    "tf.random.set_seed(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90e0a62c",
   "metadata": {},
   "source": [
    "# 1. Define Something in Advance"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52694299",
   "metadata": {},
   "source": [
    "# 2. Initialize the Grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cb09ad87",
   "metadata": {},
   "outputs": [],
   "source": [
    "delta = 0.05\n",
    "x_domain = np.arange(0, 1+delta, delta)\n",
    "y_domain = np.arange(0, 1+delta, delta)\n",
    "x_mesh,y_mesh = np.meshgrid(x_domain, y_domain)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aff173b7",
   "metadata": {},
   "source": [
    "# 3. Define Physical Info."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45a38f16",
   "metadata": {},
   "source": [
    "    suppose: \n",
    "    x = x[0];\n",
    "    y = x[1];\n",
    "    uxy = x[2]; \n",
    "    dudx = x[3];\n",
    "    dudy = x[4];\n",
    "    du2dx2 = x[5];\n",
    "    du2dy2 = x[6];\n",
    "    du2dxdy = x[7];\n",
    "    laplace = x[8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "143fcddc",
   "metadata": {},
   "outputs": [],
   "source": [
    "governing_equation_components = []\n",
    "governing_equation_components.append(Lambda(lambda x: x[5]))\n",
    "governing_equation_components.append(Lambda(lambda x: x[6]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "040914e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "governing_equation_mask = x_mesh*0\n",
    "governing_equation_mask[1:-1,1:-1] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6eec9434",
   "metadata": {},
   "outputs": [],
   "source": [
    "fx = governing_equation_mask*(x_mesh*0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d2faaa4a",
   "metadata": {},
   "outputs": [],
   "source": [
    "estimate_equation_form = False\n",
    "equation_component_combination = [1.0,5.0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a647c8f2",
   "metadata": {},
   "source": [
    "# 4. Define the Observations"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee89c021",
   "metadata": {},
   "source": [
    "    suppose: \n",
    "    x = x[0];\n",
    "    y = x[1];\n",
    "    uxy = x[2]; \n",
    "    dudx = x[3];\n",
    "    dudy = x[4];\n",
    "    du2dx2 = x[5];\n",
    "    du2dy2 = x[6];\n",
    "    du2dxdy = x[7];\n",
    "    laplace = x[8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "28d1ac32",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_components = []\n",
    "observation_components.append(Lambda(lambda x: x[2]))\n",
    "observation_components.append(Lambda(lambda x: x[3]))\n",
    "observation_components.append(Lambda(lambda x: x[4]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41dc785c",
   "metadata": {},
   "source": [
    "    format: [x,y,combination,value]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ff1e2ce1",
   "metadata": {},
   "outputs": [],
   "source": [
    "truth_smooth = loadmat('data.mat')['uxy_list'][-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "27ef0d34",
   "metadata": {},
   "outputs": [],
   "source": [
    "truth_data = loadmat('data.mat')['uxy_list'][-1] + np.random.normal(loc=0.0, scale=0.4, size=x_mesh.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9b5560ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(21, 21)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "truth_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2d64204",
   "metadata": {},
   "source": [
    "observation_data = []\n",
    "\n",
    "theta_list = np.linspace(0,np.pi*2,800)\n",
    "for theta in theta_list:\n",
    "    x = x_theta(theta)\n",
    "    y = y_theta(theta)\n",
    "    comb = [1,0,0]\n",
    "    v = U(x,y)\n",
    "    observation_data.append([x,y,comb,v])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d02e9dae",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data = []\n",
    "for x,y,v in zip(x_mesh.ravel(),y_mesh.ravel(),truth_data.ravel()):\n",
    "    comb = [1,0,0]\n",
    "    observation_data.append([x,y,comb,v])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2270ab5c",
   "metadata": {},
   "source": [
    "# 5. Define PICN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c05580e3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_x_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[-1.0/delta]], [[1.0/delta]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "bb1cf4d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_x2_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]], [[-2.0/delta**2]], [[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2ed662f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_y_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[-1.0/delta]]], [[[1.0/delta]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "bbbbf69d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_y2_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]]], [[[-2.0/delta**2]]], [[[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "7f852ff4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_xy_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]], [[-1.0/delta**2]]], [[[-1.0/delta**2]], [[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "4fac796a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def laplace_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[0]], [[1.0/delta**2]], [[0]]], [[[1.0/delta**2]], [[-4.0/delta**2]], [[1.0/delta**2]]], [[[0]], [[1.0/delta**2]], [[0]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "858a79b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "inputs = [keras.layers.Input(shape=(1,1,1)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1)),\n",
    "          keras.layers.Input(shape=(len(observation_data),len(observation_components)*4)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1))]\n",
    "\n",
    "hidden_field = keras.layers.Conv2DTranspose(filters=1, \n",
    "                                            kernel_size=[len(y_domain)+4,len(x_domain)+4], \n",
    "                                            activation='linear')(inputs[0])\n",
    "coordinates_x = inputs[1]\n",
    "coordinates_y = inputs[2]\n",
    "field = keras.layers.Conv2D(filters=1, \n",
    "                            kernel_size=3, \n",
    "                            padding='valid', \n",
    "                            activation=Lambda(lambda x: x))(hidden_field)\n",
    "gradient_x_field = keras.layers.Conv2D(filters=1, \n",
    "                                     kernel_size=[1,2], \n",
    "                                     padding='valid',\n",
    "                                     use_bias=False,\n",
    "                                     trainable=False,\n",
    "                                     kernel_initializer=gradient_x_kernal_init)(field)\n",
    "gradient_x2_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[1,3], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_x2_kernal_init)(field)\n",
    "gradient_y_field = keras.layers.Conv2D(filters=1, \n",
    "                                     kernel_size=[2,1], \n",
    "                                     padding='valid',\n",
    "                                     use_bias=False,\n",
    "                                     trainable=False,\n",
    "                                     kernel_initializer=gradient_y_kernal_init)(field)\n",
    "gradient_y2_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[3,1], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_y2_kernal_init)(field)\n",
    "gradient_xy_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[2,2], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_xy_kernal_init)(field)\n",
    "laplace_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[3,3], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=laplace_kernal_init)(field)\n",
    "phycial_fields = [coordinates_x,\n",
    "                  coordinates_y,\n",
    "                  field[:,1:-1,1:-1,:],\n",
    "                  gradient_x_field[:,1:-1,1:,:],\n",
    "                  gradient_y_field[:,1:,1:-1,:],\n",
    "                  gradient_x2_field[:,1:-1,:,:],\n",
    "                  gradient_y2_field[:,:,1:-1,:],\n",
    "                  gradient_xy_field[:,1:,1:,:],\n",
    "                  laplace_field]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f9985fe3",
   "metadata": {},
   "outputs": [],
   "source": [
    "if estimate_equation_form==True:\n",
    "    tf_governing_equation_components = [component(phycial_fields) for component in governing_equation_components]\n",
    "    concat_equation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_governing_equation_components)\n",
    "    governing_equation = keras.layers.Conv2D(filters=1, \n",
    "                                             kernel_size=[1,1], \n",
    "                                             padding='valid',\n",
    "                                             use_bias=False)(concat_equation_components)*inputs[4]\n",
    "else:\n",
    "    tf_weighted_governing_equation_components = [weight*component(phycial_fields) for [weight,component] in zip(equation_component_combination,governing_equation_components)]\n",
    "    concat_weighted_equation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_weighted_governing_equation_components)\n",
    "    governing_equation = Lambda(lambda x: tf.reduce_sum(x,axis=-1,keepdims=True))(concat_weighted_equation_components)*inputs[4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "0acc5d42",
   "metadata": {},
   "outputs": [],
   "source": [
    "tf_observation_components = [component(phycial_fields) for component in observation_components]\n",
    "concat_observation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_observation_components)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ccbe78d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "left_x_position_index_list = []\n",
    "right_x_position_index_list = []\n",
    "left_x_position_weight_list = []\n",
    "right_x_position_weight_list = []\n",
    "\n",
    "bottom_y_position_index_list = []\n",
    "top_y_position_index_list = []\n",
    "bottom_y_position_weight_list = []\n",
    "top_y_position_weight_list = []\n",
    "\n",
    "\n",
    "for data in observation_data:\n",
    "    \n",
    "    left_x_position_index = int(np.floor((data[0] - x_domain[0])/delta))\n",
    "    right_x_position_index = left_x_position_index + 1\n",
    "    left_x_position_weight = 1-(data[0] - (x_domain[0]+delta*left_x_position_index))/delta\n",
    "    right_x_position_weight = 1-left_x_position_weight\n",
    "    \n",
    "    bottom_y_position_index = int(np.floor((data[1] - y_domain[0])/delta))\n",
    "    top_y_position_index = bottom_y_position_index + 1\n",
    "    bottom_y_position_weight = 1-(data[1] - (y_domain[0]+delta*bottom_y_position_index))/delta\n",
    "    top_y_position_weight = 1-bottom_y_position_weight\n",
    "    \n",
    "    if data[0] <= x_domain[0] + 1e-8:\n",
    "        left_x_position_index = 0\n",
    "        right_x_position_index = 1\n",
    "        left_x_position_weight = 1\n",
    "        right_x_position_weight = 0\n",
    "    if data[0] >= x_domain[-1] - 1e-8:\n",
    "        left_x_position_index = len(x_domain)-2\n",
    "        right_x_position_index = len(x_domain)-1\n",
    "        left_x_position_weight = 0\n",
    "        right_x_position_weight = 1\n",
    "    if data[1] <= y_domain[0] + 1e-8:\n",
    "        bottom_y_position_index = 0\n",
    "        top_y_position_index = 1\n",
    "        bottom_y_position_weight = 1\n",
    "        top_y_position_weight = 0\n",
    "    if data[1] >= y_domain[-1] - 1e-8:\n",
    "        bottom_y_position_index = len(y_domain)-2\n",
    "        top_y_position_index = len(y_domain)-1\n",
    "        bottom_y_position_weight = 0\n",
    "        top_y_position_weight = 1\n",
    "    \n",
    "    left_x_position_index_list.append(left_x_position_index)\n",
    "    right_x_position_index_list.append(right_x_position_index)\n",
    "    left_x_position_weight_list.append(left_x_position_weight)\n",
    "    right_x_position_weight_list.append(right_x_position_weight)\n",
    "\n",
    "    bottom_y_position_index_list.append(bottom_y_position_index)\n",
    "    top_y_position_index_list.append(top_y_position_index)\n",
    "    bottom_y_position_weight_list.append(bottom_y_position_weight)\n",
    "    top_y_position_weight_list.append(top_y_position_weight)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "07f61683",
   "metadata": {},
   "outputs": [],
   "source": [
    "left_bottom_indices = tf.constant([[0,y,x] for x,y in zip(left_x_position_index_list,bottom_y_position_index_list)])\n",
    "left_top_indices = tf.constant([[0,y,x] for x,y in zip(left_x_position_index_list,top_y_position_index_list)])\n",
    "right_bottom_indices = tf.constant([[0,y,x] for x,y in zip(right_x_position_index_list,bottom_y_position_index_list)])\n",
    "right_top_indices = tf.constant([[0,y,x] for x,y in zip(right_x_position_index_list,top_y_position_index_list)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5d7fafb6",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_left_bottom_part = Lambda(lambda x: tf.gather_nd(x,left_bottom_indices))(concat_observation_components)\n",
    "observation_data_left_top_part = Lambda(lambda x: tf.gather_nd(x,left_top_indices))(concat_observation_components)\n",
    "observation_data_right_bottom_part = Lambda(lambda x: tf.gather_nd(x,right_bottom_indices))(concat_observation_components)\n",
    "observation_data_right_top_part = Lambda(lambda x: tf.gather_nd(x,right_top_indices))(concat_observation_components)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "b31ebd19",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_four_part = Lambda(lambda x: tf.expand_dims(tf.concat(x,axis=-1),axis=0))([observation_data_left_bottom_part,observation_data_left_top_part,observation_data_right_bottom_part,observation_data_right_top_part])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1459fbc8",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_interpolation_weights = np.expand_dims(\n",
    "np.asarray([np.concatenate([(np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*left_x_position_weight_list[i]*bottom_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*left_x_position_weight_list[i]*top_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*right_x_position_weight_list[i]*bottom_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*right_x_position_weight_list[i]*top_y_position_weight_list[i]],axis=-1) for i in range(len(observation_data))]),\n",
    "    axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e39b91a6",
   "metadata": {},
   "outputs": [],
   "source": [
    "observations = Lambda(lambda x: tf.reduce_sum(x[0]*x[1],axis=-1))([inputs[3][0,:,:],observation_data_four_part])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "c2c9be15",
   "metadata": {},
   "outputs": [],
   "source": [
    "pde_model = keras.Model(inputs=inputs[:3], outputs=phycial_fields)\n",
    "pde_model_train = keras.Model(inputs=inputs, outputs=[governing_equation,observations])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8dbf6c1e",
   "metadata": {},
   "source": [
    "# 6. Prepare the Training Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "e13964ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 1, 1, 1)\n"
     ]
    }
   ],
   "source": [
    "unit_constant = np.asarray([[[[1.0]]]],dtype=np.float32)\n",
    "training_input_data_0 = unit_constant\n",
    "print(training_input_data_0.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "03abae6b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_1 = np.expand_dims(x_mesh.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_1.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "bfb2a398",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_2 = np.expand_dims(y_mesh.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_2.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "1e42e21c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 441, 12)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_3 = observation_data_interpolation_weights.astype(np.float32)\n",
    "print(training_input_data_3.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d7a8b07b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_4 = np.expand_dims(governing_equation_mask.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_2.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "83251413",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_label_data_0 = np.expand_dims(fx.astype(np.float32),axis=[0,-1])\n",
    "print(training_label_data_0.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "09992122",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 441)\n"
     ]
    }
   ],
   "source": [
    "training_label_data_1 = np.expand_dims(np.asarray([data[3] for data in observation_data]),axis=[0])\n",
    "print(training_label_data_1.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "3ae901b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "training_input_data = [training_input_data_0,training_input_data_1,training_input_data_2,training_input_data_3,training_input_data_4]\n",
    "training_label_data = [training_label_data_0,training_label_data_1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d3ecd9a",
   "metadata": {},
   "source": [
    "# 7. Train the Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "da87972b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['loss', 'tf_op_layer_Mul_2_loss', 'lambda_14_loss']\n"
     ]
    }
   ],
   "source": [
    "pde_model_train.compile(optimizer=keras.optimizers.Adam(), loss=\"mse\")\n",
    "pde_model_train.save_weights('picn_initial_weights.h5')\n",
    "temp_history = pde_model_train.fit(x=training_input_data, y=training_label_data, epochs=1, verbose=0)\n",
    "history_keys = []\n",
    "for key in temp_history.history.keys():\n",
    "    history_keys.append(key)\n",
    "print(history_keys)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "daa7785a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def record_predictions():\n",
    "    [_, _, uxy, dudx, dudy, d2udx2, d2udy2, d2udxdy, laplace] = pde_model.predict(training_input_data[:3])\n",
    "    uxy_list.append(uxy[:,:,:,0])\n",
    "    dudx_list.append(dudx[:,:,:,0])\n",
    "    dudy_list.append(dudy[:,:,:,0])\n",
    "    d2udx2_list.append(d2udx2[:,:,:,0])\n",
    "    d2udy2_list.append(d2udy2[:,:,:,0])\n",
    "    d2udxdy_list.append(d2udxdy[:,:,:,0])\n",
    "    laplace_list.append(laplace[:,:,:,0])\n",
    "\n",
    "class Per_X_Epoch_Record(tf.keras.callbacks.Callback):\n",
    "    def __init__(self, record_interval, verbose=1):\n",
    "        super(tf.keras.callbacks.Callback, self).__init__()\n",
    "        self.total_loss = history_keys[0]\n",
    "        self.domain_loss = history_keys[1]\n",
    "        self.bdc_loss = history_keys[2]\n",
    "        self.previous_total_loss = 9999999\n",
    "        self.record_interval = record_interval;\n",
    "        self.verbose = verbose\n",
    "\n",
    "    def on_epoch_end(self, epoch, logs={}):\n",
    "        \n",
    "        if epoch%self.record_interval == 0:\n",
    "            \n",
    "            current_total_loss = logs.get(self.total_loss)\n",
    "            current_domain_loss = logs.get(self.domain_loss)\n",
    "            current_bdc_loss = logs.get(self.bdc_loss)\n",
    "            \n",
    "            epoch_number_list.append(epoch)\n",
    "            total_loss_list.append(current_total_loss)\n",
    "            domain_loss_list.append(current_domain_loss)\n",
    "            boundary_loss_list.append(current_bdc_loss)\n",
    "        \n",
    "            if current_total_loss < self.previous_total_loss:\n",
    "                self.previous_total_loss = current_total_loss\n",
    "                pde_model_train.save_weights('picn_best_weights.h5')\n",
    "            \n",
    "            if self.verbose > 0:\n",
    "                print(\"epoch: {:10.5f} | total_loss: {:10.5f} | domain_loss: {:10.5f} | bdc_loss: {:10.5f}\".format(epoch,current_total_loss,current_domain_loss,current_bdc_loss))\n",
    "        \n",
    "            # evaluate the errors in f-domain\n",
    "            record_predictions()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "2dfa38e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "callbacks = [\n",
    "    Per_X_Epoch_Record(record_interval=200,verbose=1),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "09eccbbe",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:    0.00000 | total_loss:  443.39774 | domain_loss: 44271.01953 | bdc_loss:    0.69451\n",
      "epoch:  200.00000 | total_loss:   29.61847 | domain_loss: 2899.77075 | bdc_loss:    0.62703\n",
      "epoch:  400.00000 | total_loss:    7.39370 | domain_loss:  682.81964 | bdc_loss:    0.57121\n",
      "epoch:  600.00000 | total_loss:    3.42468 | domain_loss:  290.39319 | bdc_loss:    0.52601\n",
      "epoch:  800.00000 | total_loss:    2.01577 | domain_loss:  153.16243 | bdc_loss:    0.48904\n",
      "epoch: 1000.00000 | total_loss:    1.36699 | domain_loss:   91.29961 | bdc_loss:    0.45858\n",
      "epoch: 1200.00000 | total_loss:    1.02260 | domain_loss:   59.34463 | bdc_loss:    0.43349\n",
      "epoch: 1400.00000 | total_loss:    0.81774 | domain_loss:   40.89076 | bdc_loss:    0.41296\n",
      "epoch: 1600.00000 | total_loss:    0.68401 | domain_loss:   29.16500 | bdc_loss:    0.39633\n",
      "epoch: 1800.00000 | total_loss:    0.59112 | domain_loss:   21.18976 | bdc_loss:    0.38306\n",
      "epoch: 2000.00000 | total_loss:    0.52446 | domain_loss:   15.55275 | bdc_loss:    0.37266\n",
      "epoch: 2200.00000 | total_loss:    0.47613 | domain_loss:   11.50807 | bdc_loss:    0.36470\n",
      "epoch: 2400.00000 | total_loss:    0.44123 | domain_loss:    8.60502 | bdc_loss:    0.35876\n",
      "epoch: 2600.00000 | total_loss:    0.41627 | domain_loss:    6.53442 | bdc_loss:    0.35447\n",
      "epoch: 2800.00000 | total_loss:    0.39861 | domain_loss:    5.06598 | bdc_loss:    0.35146\n",
      "epoch: 3000.00000 | total_loss:    0.38617 | domain_loss:    4.02331 | bdc_loss:    0.34943\n",
      "epoch: 3200.00000 | total_loss:    0.37735 | domain_loss:    3.27313 | bdc_loss:    0.34810\n",
      "epoch: 3400.00000 | total_loss:    0.37096 | domain_loss:    2.71881 | bdc_loss:    0.34725\n",
      "epoch: 3600.00000 | total_loss:    0.36617 | domain_loss:    2.29385 | bdc_loss:    0.34669\n",
      "epoch: 3800.00000 | total_loss:    0.36241 | domain_loss:    1.95500 | bdc_loss:    0.34633\n",
      "epoch: 4000.00000 | total_loss:    0.35936 | domain_loss:    1.67540 | bdc_loss:    0.34606\n",
      "epoch: 4200.00000 | total_loss:    0.35678 | domain_loss:    1.43866 | bdc_loss:    0.34585\n",
      "epoch: 4400.00000 | total_loss:    0.35455 | domain_loss:    1.23490 | bdc_loss:    0.34566\n",
      "epoch: 4600.00000 | total_loss:    0.35260 | domain_loss:    1.05775 | bdc_loss:    0.34548\n",
      "epoch: 4800.00000 | total_loss:    0.35088 | domain_loss:    0.90297 | bdc_loss:    0.34530\n",
      "epoch: 5000.00000 | total_loss:    0.34935 | domain_loss:    0.76745 | bdc_loss:    0.34512\n",
      "epoch: 5200.00000 | total_loss:    0.34798 | domain_loss:    0.64889 | bdc_loss:    0.34494\n",
      "epoch: 5400.00000 | total_loss:    0.34676 | domain_loss:    0.54539 | bdc_loss:    0.34476\n",
      "epoch: 5600.00000 | total_loss:    0.34567 | domain_loss:    0.45542 | bdc_loss:    0.34456\n",
      "epoch: 5800.00000 | total_loss:    0.34470 | domain_loss:    0.37764 | bdc_loss:    0.34436\n",
      "epoch: 6000.00000 | total_loss:    0.34382 | domain_loss:    0.31085 | bdc_loss:    0.34415\n",
      "epoch: 6200.00000 | total_loss:    0.34304 | domain_loss:    0.25394 | bdc_loss:    0.34394\n",
      "epoch: 6400.00000 | total_loss:    0.34233 | domain_loss:    0.20593 | bdc_loss:    0.34371\n",
      "epoch: 6600.00000 | total_loss:    0.34169 | domain_loss:    0.16573 | bdc_loss:    0.34347\n",
      "epoch: 6800.00000 | total_loss:    0.34110 | domain_loss:    0.13246 | bdc_loss:    0.34321\n",
      "epoch: 7000.00000 | total_loss:    0.34057 | domain_loss:    0.10529 | bdc_loss:    0.34294\n",
      "epoch: 7200.00000 | total_loss:    0.34007 | domain_loss:    0.08340 | bdc_loss:    0.34266\n",
      "epoch: 7400.00000 | total_loss:    0.33959 | domain_loss:    0.06599 | bdc_loss:    0.34236\n",
      "epoch: 7600.00000 | total_loss:    0.33914 | domain_loss:    0.05236 | bdc_loss:    0.34204\n",
      "epoch: 7800.00000 | total_loss:    0.33870 | domain_loss:    0.04244 | bdc_loss:    0.34170\n",
      "epoch: 8000.00000 | total_loss:    0.33826 | domain_loss:    0.03427 | bdc_loss:    0.34133\n",
      "epoch: 8200.00000 | total_loss:    0.33782 | domain_loss:    0.02872 | bdc_loss:    0.34095\n",
      "epoch: 8400.00000 | total_loss:    0.33738 | domain_loss:    0.02523 | bdc_loss:    0.34053\n",
      "epoch: 8600.00000 | total_loss:    0.33692 | domain_loss:    0.02236 | bdc_loss:    0.34009\n",
      "epoch: 8800.00000 | total_loss:    0.33643 | domain_loss:    0.02080 | bdc_loss:    0.33962\n",
      "epoch: 9000.00000 | total_loss:    0.33592 | domain_loss:    0.01996 | bdc_loss:    0.33911\n",
      "epoch: 9200.00000 | total_loss:    0.33538 | domain_loss:    0.01974 | bdc_loss:    0.33857\n",
      "epoch: 9400.00000 | total_loss:    0.33479 | domain_loss:    0.01946 | bdc_loss:    0.33798\n",
      "epoch: 9600.00000 | total_loss:    0.33416 | domain_loss:    0.01934 | bdc_loss:    0.33734\n",
      "epoch: 9800.00000 | total_loss:    0.33349 | domain_loss:    0.02000 | bdc_loss:    0.33665\n",
      "epoch: 10000.00000 | total_loss:    0.33274 | domain_loss:    0.01958 | bdc_loss:    0.33590\n",
      "epoch: 10200.00000 | total_loss:    0.33193 | domain_loss:    0.01964 | bdc_loss:    0.33508\n",
      "epoch: 10400.00000 | total_loss:    0.33103 | domain_loss:    0.01952 | bdc_loss:    0.33418\n",
      "epoch: 10600.00000 | total_loss:    0.33010 | domain_loss:    0.02425 | bdc_loss:    0.33319\n",
      "epoch: 10800.00000 | total_loss:    0.32897 | domain_loss:    0.02109 | bdc_loss:    0.33208\n",
      "epoch: 11000.00000 | total_loss:    0.32775 | domain_loss:    0.02138 | bdc_loss:    0.33085\n",
      "epoch: 11200.00000 | total_loss:    0.32635 | domain_loss:    0.01940 | bdc_loss:    0.32945\n",
      "epoch: 11400.00000 | total_loss:    0.32494 | domain_loss:    0.03510 | bdc_loss:    0.32786\n",
      "epoch: 11600.00000 | total_loss:    0.32298 | domain_loss:    0.01850 | bdc_loss:    0.32605\n",
      "epoch: 11800.00000 | total_loss:    0.32090 | domain_loss:    0.01943 | bdc_loss:    0.32395\n",
      "epoch: 12000.00000 | total_loss:    0.31845 | domain_loss:    0.01690 | bdc_loss:    0.32150\n",
      "epoch: 12200.00000 | total_loss:    0.31559 | domain_loss:    0.01568 | bdc_loss:    0.31862\n",
      "epoch: 12400.00000 | total_loss:    0.31222 | domain_loss:    0.01492 | bdc_loss:    0.31522\n",
      "epoch: 12600.00000 | total_loss:    0.30822 | domain_loss:    0.01258 | bdc_loss:    0.31120\n",
      "epoch: 12800.00000 | total_loss:    0.30356 | domain_loss:    0.01898 | bdc_loss:    0.30644\n",
      "epoch: 13000.00000 | total_loss:    0.29800 | domain_loss:    0.01822 | bdc_loss:    0.30082\n",
      "epoch: 13200.00000 | total_loss:    0.29139 | domain_loss:    0.00754 | bdc_loss:    0.29426\n",
      "epoch: 13400.00000 | total_loss:    0.28382 | domain_loss:    0.00644 | bdc_loss:    0.28662\n",
      "epoch: 13600.00000 | total_loss:    0.27510 | domain_loss:    0.01478 | bdc_loss:    0.27773\n",
      "epoch: 13800.00000 | total_loss:    0.26506 | domain_loss:    0.00417 | bdc_loss:    0.26769\n",
      "epoch: 14000.00000 | total_loss:    0.25383 | domain_loss:    0.00350 | bdc_loss:    0.25636\n",
      "epoch: 14200.00000 | total_loss:    0.24154 | domain_loss:    0.00290 | bdc_loss:    0.24396\n",
      "epoch: 14400.00000 | total_loss:    0.22839 | domain_loss:    0.00288 | bdc_loss:    0.23067\n",
      "epoch: 14600.00000 | total_loss:    0.21497 | domain_loss:    0.02747 | bdc_loss:    0.21687\n",
      "epoch: 14800.00000 | total_loss:    0.20096 | domain_loss:    0.00163 | bdc_loss:    0.20297\n",
      "epoch: 15000.00000 | total_loss:    0.18773 | domain_loss:    0.00627 | bdc_loss:    0.18957\n",
      "epoch: 15200.00000 | total_loss:    0.17522 | domain_loss:    0.00203 | bdc_loss:    0.17697\n",
      "epoch: 15400.00000 | total_loss:    0.16447 | domain_loss:    0.04350 | bdc_loss:    0.16569\n",
      "epoch: 15600.00000 | total_loss:    0.15451 | domain_loss:    0.01154 | bdc_loss:    0.15596\n",
      "epoch: 15800.00000 | total_loss:    0.14664 | domain_loss:    0.02838 | bdc_loss:    0.14783\n",
      "epoch: 16000.00000 | total_loss:    0.13995 | domain_loss:    0.00080 | bdc_loss:    0.14135\n",
      "epoch: 16200.00000 | total_loss:    0.13506 | domain_loss:    0.00657 | bdc_loss:    0.13635\n",
      "epoch: 16400.00000 | total_loss:    0.13152 | domain_loss:    0.02458 | bdc_loss:    0.13260\n",
      "epoch: 16600.00000 | total_loss:    0.12885 | domain_loss:    0.02995 | bdc_loss:    0.12985\n",
      "epoch: 16800.00000 | total_loss:    0.12660 | domain_loss:    0.00047 | bdc_loss:    0.12787\n",
      "epoch: 17000.00000 | total_loss:    0.12520 | domain_loss:    0.00053 | bdc_loss:    0.12646\n",
      "epoch: 17200.00000 | total_loss:    0.12427 | domain_loss:    0.00845 | bdc_loss:    0.12544\n",
      "epoch: 17400.00000 | total_loss:    0.12400 | domain_loss:    0.05572 | bdc_loss:    0.12469\n",
      "epoch: 17600.00000 | total_loss:    0.12289 | domain_loss:    0.00042 | bdc_loss:    0.12413\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 17800.00000 | total_loss:    0.12247 | domain_loss:    0.00139 | bdc_loss:    0.12369\n",
      "epoch: 18000.00000 | total_loss:    0.12276 | domain_loss:    0.06645 | bdc_loss:    0.12333\n",
      "epoch: 18200.00000 | total_loss:    0.12181 | domain_loss:    0.00043 | bdc_loss:    0.12303\n",
      "epoch: 18400.00000 | total_loss:    0.12157 | domain_loss:    0.00167 | bdc_loss:    0.12278\n",
      "epoch: 18600.00000 | total_loss:    0.12140 | domain_loss:    0.00657 | bdc_loss:    0.12256\n",
      "epoch: 18800.00000 | total_loss:    0.12114 | domain_loss:    0.00083 | bdc_loss:    0.12235\n",
      "epoch: 19000.00000 | total_loss:    0.12096 | domain_loss:    0.00081 | bdc_loss:    0.12217\n",
      "epoch: 19200.00000 | total_loss:    0.12081 | domain_loss:    0.00269 | bdc_loss:    0.12200\n",
      "epoch: 19400.00000 | total_loss:    0.12145 | domain_loss:    0.08136 | bdc_loss:    0.12185\n",
      "epoch: 19600.00000 | total_loss:    0.12050 | domain_loss:    0.00046 | bdc_loss:    0.12171\n",
      "epoch: 19800.00000 | total_loss:    0.12037 | domain_loss:    0.00042 | bdc_loss:    0.12158\n"
     ]
    }
   ],
   "source": [
    "epoch_number_list = []\n",
    "total_loss_list = []\n",
    "domain_loss_list = []\n",
    "boundary_loss_list = []\n",
    "uxy_list = []\n",
    "dudx_list = []\n",
    "dudy_list = []\n",
    "d2udx2_list = []\n",
    "d2udy2_list = []\n",
    "d2udxdy_list = []\n",
    "laplace_list = []\n",
    "pde_model_train.load_weights('picn_initial_weights.h5')\n",
    "pde_model_train.compile(optimizer=keras.optimizers.Adam(learning_rate=0.0002), loss=\"mse\", loss_weights = [0.01, 0.99])\n",
    "pde_model_train.fit(x=training_input_data, \n",
    "                    y=training_label_data, \n",
    "                    epochs=20000, verbose=0,\n",
    "                    callbacks=callbacks)\n",
    "pde_model_train.load_weights('picn_best_weights.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "983f2f78",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2qCU2pCUlFSZ8CpNhmIIIYQQQlzaqmPMcjRwpMjrRCBaa/2k1voh4EvgQ621s6SDtdYztNZxWuu48PDwagiv7HpE9yAyIBJN7Z2LWgghhBDCmzZs2MADDzxQpXVOmDCBb775pkrrrKjqmA1DlbDNnW1qrT+thnNWi1s73sptnW5DqZLekhBCCCHEpcFut2MylZw2xsXFERdX4noeF4Xq6FlOBBoVed0QOFYN56l2RoNREmUhhBBCnJeapjw+Zmyc4S43Y+OMUsuW13PPPUebNm0YNGgQY8eO5dVXX2XLli306tWLTp06MWLECFJTU9m1axc9evRwH5eQkECnTp0A2LhxI3379qVbt24MHjyY48ePA9CvXz+eeOIJ+vbty1tvvUW/fv14/PHH6dGjB61ateK3334DYOXKlQwb5pro7Nlnn2XixIn069ePZs2a8fbbb5caa1ksW7aMLl260LFjRyZOnEh+fj4AU6dOpV27dnTq1Im///3vAPzvf/+jQ4cOdO7cmT59+pS7PUtSHcnyeqClUipGKWUBxgDfVcN5akyWNYvknGRvhyGEEEII4bZhwwbmzZvH5s2bmT9/Phs2bADg9ttv56WXXmLbtm107NiRadOm0bZtW6xWKwcOHABg7ty53HTTTdhsNu6//36++eYbNm7cyMSJE3nyySfd50hLS+PXX3/l0UcfBVw9zOvWrePNN99k2rRpJca1e/dulixZwrp165g2bRo2m81jrOeTl5fHhAkTmDt3Ltu3b8dut/P++++TkpLCggUL2LlzJ9u2beOpp54C4N///jdLlixh69atfPdd1aSflRqGoZT6CugHhCmlEoFntNYfK6XuA5YARuATrfXOSkfqJW+seYO///J3pvaeyvNXPe/tcIQQQghRC+lnynZ/0+Ruk5ncbXKVnPP3339n+PDh+Pn5AXDdddeRnZ1NWloaffv2BWD8+PHceOONANx00018/fXXTJ06lblz5zJ37lz27NnDjh07GDRoEAAOh4MGDRq4z3HzzTcXO+fIkSMB6NatGwkJCSXGNXToUHx8fPDx8SEiIoKTJ0+WGGtZ7Nmzh5iYGFq1auV+P++++y733Xcfvr6+3HXXXQwdOtTds927d28mTJjATTfd5I61siqVLGutx3rY/iPwY2Xqri1iQmNwaifrjsmMGEIIIYSoPbQu3wQEN998MzfeeCMjR45EKUXLli3Zvn077du3Z82aNSUeExAQUOy1j48PAEajEbvdXuIxhWWKlitvrIU8HWcymVi3bh3Lli1jzpw5vPPOOyxfvpzp06ezdu1aFi1aRGxsLFu2bKFevXoVOnehGl3B70JUOH3c+qPrcZY8gYcQQgghRI274oor+P7778nLyyMrK4tFixYREBBAaGioezzx7Nmz3b3MzZs3x2g08txzz7l7jFu3bk1SUpI7WbbZbOzcWfUDAkqKtSzatGlDQkIC8fHxxd5PVlYW6enpXHvttbz55pts2bIFgP3799OzZ0/+/e9/ExYWxpEjR0qpvWyqYzaMi0pUUBRRQVEcyzzGvuR9tA5r7e2QhBBCCCHo3r07119/PZ07d6ZJkybExcUREhLCZ599xpQpU8jJyaFZs2bMnDnTfczNN9/MY489xsGDBwGwWCx88803PPDAA6Snp2O323nooYdo3759jcR6Pr6+vsycOZMbb7wRu91O9+7dmTJlCikpKQwfPpy8vDy01rzxxhsAPPbYY+zbtw+tNVdddRWdO3eudOyqot3iNSEuLk6XdQB4dRoxdwQLdy9k1g2zuK3zbd4ORwghhBBetmvXLtq2bevtMMjKyiIwMJCcnBz69OnDjBkz6Nq1q7fDKlFtibWk351SaqPWusT572QYRhn0iJKV/IQQQghR+0yePJnY2Fi6du3KqFGjam2iDBdWrEXJMIwycI9bPrbey5EIIYQQQpzx5ZdfejuEMisp1nvvvZfVq1cX2/bggw9yxx131FRY5yXJchn0iO7BgpsX0D2qu7dDEUIIIYS4aLz77rveDuG8JFkugyCfIG5oc4O3wxBCCCGEEDVMxiyXk81h83YIQgghhBCihkiyXEZaax5a/BBRr0dxIuuEt8MRQgghhBA1QJLlMlJKcSj9EKdzTvPplk+9HY4QQgghhKgBkiyXw6SukwD4cNOHspqfEEIIIbwqISGBDh061Nj5nn32WV599dULtv6KkmS5HAY3H0yj4EYcSD3AioMrvB2OEEIIIUStZbfbvR1ClZBkuRyMBiN3db0LgBmbZng5GiGEEELUFkp5fswokjLMmFF62fKy2+2MHz+eTp06MXr0aHJycli2bBldunShY8eOTJw4kfz8fACaNm3K6dOnAdiwYQP9+vUDXD26EydOpF+/fjRr1oy3337bXf/zzz9P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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df=pd.DataFrame({'epoch': epoch_number_list, \n",
    "                 'total_loss': total_loss_list, \n",
    "                 'governing_loss': domain_loss_list, \n",
    "                 'boundary_loss': boundary_loss_list})\n",
    "\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.plot( 'epoch', 'total_loss', data=df, marker='o', markerfacecolor='red', markersize=2, color='skyblue', linewidth=3)\n",
    "plt.plot( 'epoch', 'governing_loss', data=df, marker='', color='green', linewidth=2, linestyle='dashed')\n",
    "plt.plot( 'epoch', 'boundary_loss', data=df, marker='', color='blue', linewidth=2, linestyle='dashed')\n",
    "plt.legend()\n",
    "#plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "06668b77",
   "metadata": {},
   "outputs": [],
   "source": [
    "[x_m, y_m, uxy, dudx, dudy, d2udx2, d2udy2, d2udxdy, laplace] = pde_model.predict(training_input_data[:3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "fb52c8a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'smooth')"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x216 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(1,4,constrained_layout=False, figsize=(18, 3))\n",
    "#\n",
    "ax = axs.ravel()[0]\n",
    "temp = uxy[0,:,:,0]\n",
    "cs = ax.contourf(x_domain, y_domain, uxy[0,:,:,0],20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('prediction')\n",
    "#\n",
    "ax = axs.ravel()[1]\n",
    "cs = ax.contourf(x_domain, y_domain, truth_data,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('truth')\n",
    "#\n",
    "ax = axs.ravel()[2]\n",
    "cs = ax.contourf(x_domain, y_domain, uxy[0,:,:,0]-truth_data,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('error')\n",
    "#\n",
    "ax = axs.ravel()[3]\n",
    "cs = ax.contourf(x_domain, y_domain, truth_smooth,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('smooth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "f54f1a38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1215797430586017"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean((uxy[0,:,:,0]-truth_data)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "6ad7101d",
   "metadata": {},
   "outputs": [],
   "source": [
    "picn_process_data = {'x_domain':x_domain,\n",
    "                     'y_domain':y_domain,\n",
    "                     'epoch_number_list':np.asarray(epoch_number_list),\n",
    "                     'total_loss_list':np.asarray(total_loss_list),\n",
    "                     'domain_loss_list':np.asarray(domain_loss_list),\n",
    "                     'boundary_loss_list':np.asarray(boundary_loss_list),\n",
    "                     'truth_smooth':np.asarray(truth_smooth),\n",
    "                     'truth_data':np.asarray(truth_data),\n",
    "                     'uxy_list':np.concatenate(uxy_list,axis=0),\n",
    "                     'dudx_list':np.concatenate(dudx_list,axis=0),\n",
    "                     'dudy_list':np.concatenate(dudy_list,axis=0),\n",
    "                     'd2udx2_list':np.concatenate(d2udx2_list,axis=0),\n",
    "                     'd2udy2_list':np.concatenate(d2udy2_list,axis=0),\n",
    "                     'd2udxdy_list':np.concatenate(d2udxdy_list,axis=0),\n",
    "                     'laplace_list':np.concatenate(laplace_list,axis=0)}\n",
    "savemat('picn_process_data.mat', picn_process_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ccfe4cf3",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
